package ejb.cbm.seguridad.facade;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.beanutils.BeanUtils;

import ejb.cbm.seguridad.bean.RegistroPerfilBean;
import ejb.cbm.seguridad.bean.UsuarioBean;
import ejb.cbm.seguridad.entity.RegistroPerfilEntity;
import ejb.cbm.seguridad.local.RegistroPerfilFacadeLocal;
import ejb.cbm.seguridad.local.RegistroPerfilSessionLocal;

////@Stateless
public class RegistroPerfilFacade implements RegistroPerfilFacadeLocal {
	
	//@EJB
	public RegistroPerfilSessionLocal registroPerfilSessionLocal;


	public RegistroPerfilBean buscar(Long tipoRegistro, String valorRegistro){
		
		RegistroPerfilBean bean = null;
		List<RegistroPerfilEntity> entities = null;
		
		try{
			RegistroPerfilBean filtro = new RegistroPerfilBean();
			filtro.setTiporegistro(tipoRegistro);
			filtro.setValorregistro(valorRegistro);
			
			entities = registroPerfilSessionLocal.findByFiltro(filtro);
			
			for(RegistroPerfilEntity entity : entities){
				bean = new RegistroPerfilBean();
				
				BeanUtils.copyProperties(bean, entity);
			}

		}catch(Exception e){
			e.printStackTrace();
		}
		
		return bean;
	}

	public List<RegistroPerfilBean> buscar(RegistroPerfilBean filtro){
		RegistroPerfilBean bean = null;
		List<RegistroPerfilEntity> entities = null;
		List<RegistroPerfilBean> beans = null;
		
		try{
			entities = registroPerfilSessionLocal.findByFiltro(filtro);
			
			beans = new ArrayList<RegistroPerfilBean>();
			
			for(RegistroPerfilEntity entity : entities){
				bean = new RegistroPerfilBean();
				
				BeanUtils.copyProperties(bean, entity);
				
				beans.add(bean);
			}

		}catch(Exception e){
			e.printStackTrace();
		}
		
		return beans;
	}


	public void save(RegistroPerfilBean registroPerfilBean,UsuarioBean usuarioLogeado){
		RegistroPerfilEntity entity = null;
		
		if(registroPerfilBean.getIdregistroperfil()==null){

				entity = new RegistroPerfilEntity();
				entity.setIdregistroperfil(registroPerfilBean.getIdregistroperfil());
				entity.setCodigoperfil(registroPerfilBean.getCodigoperfil());
				entity.setTiporegistro(registroPerfilBean.getTiporegistro());
				entity.setValorregistro(registroPerfilBean.getValorregistro());
				entity.setDescripcion(registroPerfilBean.getDescripcion());
				entity.setFlagactivo(registroPerfilBean.getFlagactivo());
				entity.setUsuarioregistro(usuarioLogeado.getUsuarioregistro());
				entity.setFecharegistro(new Date());
				entity.setUsuariomodificacion(usuarioLogeado.getCodigousuario());
				entity.setFechamodificacion(new Date());
				registroPerfilSessionLocal.save(entity);

		}else{
			entity = registroPerfilSessionLocal.findById(registroPerfilBean.getIdregistroperfil());
			if(registroPerfilBean.getCodigoperfil()!=null)entity.setCodigoperfil(registroPerfilBean.getCodigoperfil());
			if(registroPerfilBean.getTiporegistro()!=null)entity.setTiporegistro(registroPerfilBean.getTiporegistro());
			if(registroPerfilBean.getValorregistro()!=null)entity.setValorregistro(registroPerfilBean.getValorregistro());
			if(registroPerfilBean.getDescripcion()!=null)entity.setDescripcion(registroPerfilBean.getDescripcion());
			if(registroPerfilBean.getFlagactivo()!=null)entity.setFlagactivo(registroPerfilBean.getFlagactivo());
			entity.setUsuariomodificacion(usuarioLogeado.getCodigousuario());
			entity.setFechamodificacion(new Date());
			registroPerfilSessionLocal.update(entity);
			
		}
	}
	
	public RegistroPerfilBean buscar(Long idRegistroPerfil){
		RegistroPerfilBean bean = null;
		RegistroPerfilEntity entity = null;
		 
		try{
			entity = registroPerfilSessionLocal.findById(idRegistroPerfil);
			
			bean = new RegistroPerfilBean();
			
			BeanUtils.copyProperties(bean, entity);
		}catch(Exception e){
			e.printStackTrace();
		}
		
		
		return bean;
	}
}